package com.ruoyi.system.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.ruoyi.system.domain.BdmGood;
import com.ruoyi.system.domain.dto.BdmGoodDto;
import com.ruoyi.system.domain.dto.PointExchangeRecordDto;
import com.ruoyi.system.domain.vo.PointExchangeRecord;
import com.ruoyi.system.domain.vo.applet.AppletBdmGoodVo;
import com.ruoyi.system.domain.vo.applet.AppletBdmIntegralGoodVo;
import com.ruoyi.system.domain.vo.applet.CommodityDetailsVo;
import com.ruoyi.system.domain.vo.applet.ProductReviewsVo;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 代理商商品Mapper接口
 *
 * @author ruoyi
 * @date 2024-12-07
 */
public interface BdmGoodMapper extends BaseMapper<BdmGood> {
    /**
     * 查询代理商商品
     *
     * @param id 代理商商品主键
     * @return 代理商商品
     */
    public BdmGood selectbdmGoodById(Long id);

    /**
     * 查询代理商商品列表
     *
     * @param bdmGood 代理商商品
     * @return 代理商商品集合
     */
    public List<BdmGood> selectbdmGoodList(BdmGood bdmGood);

    /**
     * 首页搜索
     *
     * @param search 搜索框
     * @return
     */
    List<BdmGood> selectHomeContents(@Param("search") String search);

    /**
     * 查询商品列表
     *
     * @param ids 商品id
     * @return 商品集合
     */
    List<BdmGood> selectBdmGoodListByIds(Long[] ids);

    /**
     * 新增代理商商品
     *
     * @param bdmGood 代理商商品
     * @return 结果
     */
    public int insertbdmGood(BdmGood bdmGood);

    /**
     * 修改代理商商品
     *
     * @param bdmGood 代理商商品
     * @return 结果
     */
    public int updatebdmGood(BdmGood bdmGood);

    /**
     * 删除代理商商品
     *
     * @param id 代理商商品主键
     * @return 结果
     */
    public int deletebdmGoodById(Long id);

    /**
     * 批量删除代理商商品
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deletebdmGoodByIds(Long[] ids);

    /**
     * 扣减库存
     *
     * @param goodId  商品id
     * @param goodNum 数量
     * @return
     */
    int reduceInventory(@Param("goodId") String goodId, @Param("goodNum") String goodNum);

    /**
     * 查询 小程序 商品列表
     *
     * @param bdmGoodDto
     * @return
     */
    List<AppletBdmGoodVo> listGoodVo(@Param("bdmGoodDto") BdmGoodDto bdmGoodDto);

    /**
     * 根据商品 id查询 小程序 商品
     *
     * @param goodId
     * @return
     */

    AppletBdmGoodVo goodVo(@Param("goodId") Long goodId, @Param("userId") Long userId);

    /**
     * 查询 积分商城列表
     */
    List<AppletBdmIntegralGoodVo> integralGoodList();

    /**
     * 查询商品评论
     */
    List<ProductReviewsVo> productReviews(@Param("goodId") Long goodId);


    /**
     * 积分商城兑换记录
     */
    List<PointExchangeRecord> pointExchangeRecord(@Param("pointExchangeRecordDto") PointExchangeRecordDto pointExchangeRecordDto);

    /**
     * 补货查看商品详情
     */
    CommodityDetailsVo getCommodityDetails(@Param("goodId") Long goodId,@Param("userId")Long userId);
}
